home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 1
/
Nebula One.iso
/
Financial
/
Stopwatch2.3
/
Source
/
StopWatch.m
< prev
next >
Wrap
Text File
|
1995-06-12
|
2KB
|
97 lines
/*
* Stopwatch/time support for Stopwatch app.
* Author: Rich Plevin
*
* For legal stuff see the file COPYRIGHT
*/
#import "StopWatch.h"
@implementation StopWatch
- startWatch
{
if ( running == YES )
return nil;
gettimeofday( &start, NULL );
running = YES;
return self;
}
- stopWatch
{
if ( running == NO )
return nil;
/* Note: Second arg (timezone) is ignored on NeXT */
gettimeofday( &finish, NULL );
running = NO;
return self;
}
- (BOOL) running
{
return running;
}
/*
* If its running, show time from start until now, otherwise show
* the time that passed between the saved start and finish.
*/
- (int) elapsedMinutes
{
int mins, secs;
struct timeval end;
if ( running == YES )
gettimeofday( &end, NULL );
else
end = finish;
secs = end.tv_sec - start.tv_sec;
mins = secs / 60;
if ( secs % 60 >= 30 )
++mins; /* round up if necessary */
return mins;
}
- (const char *) elapsedTime
{
int hrs, mins;
static char buf[6]; /* enough for a "hh:mm" string - a 99 hour binge... */
mins = [self elapsedMinutes];
hrs = mins / 60; /* total number of hours */
mins %= 60; /* remainder number of minutes */
/*
* NB: Make the buffer larger if the format string requires it!!
*/
sprintf( buf, "%02d:%02d", hrs, mins );
return (const char *)buf;
}
- (const char *)startTimeString
{
static char buf[6]; /* enough for a "hh:mm" string */
struct tm *tm;
tm = localtime(&start.tv_sec);
sprintf( buf, "%02d:%02d", tm->tm_hour, tm->tm_min );
return (const char *)buf;
}
- (const char *)startDateString;
{
static char buf[9]; /* enough for a "mm/dd/yy" string */
struct tm *tm;
tm = localtime(&start.tv_sec);
sprintf( buf, "%02d/%02d/%02d", tm->tm_mon + 1, tm->tm_mday, tm->tm_year );
return (const char *)buf;
}
@end